Location aware sticky notes

ABSTRACT

In one embodiment, a computer system creates for a first user a location-triggered note specific for a second user and for a particular location, determines the second user&#39;s location, and transmits the location-triggered note to the second user if the second user is at the particular location.

TECHNICAL FIELD

The present disclosure generally relates to location-aware applications,and more particularly, to systems allowing a user to leave electronic,location-triggered note messages for other users.

BACKGROUND

A social networking system, such as a social networking website, enablesits users to interact with it and with each other through the system.The social networking system may create and store a record, oftenreferred to as a user profile, in connection with the user. The userprofile may include a user's demographic information, communicationchannel information, and personal interests. The social networkingsystem may also create and store a record of a user's relationship withother users in the social networking system (e.g., social graph), aswell as provide services (e.g., wall-posts, photo-sharing, or instantmessaging) to facilitate social interaction between users in the socialnetworking system. A geo-social networking system is a social networkingsystem in which geographic services and capabilities are used to enableadditional social interactions. User-submitted location data orgeo-location techniques (e.g., mobile phone position tracking) can allowa geo-social network system to connect and coordinate users with localpeople or events that match their interests. For example, users cancheck-in to a place using a mobile client application by providing aname of a place (or selecting a place from a pre-established list ofplaces). The geo-social networking system, among other things, canrecord information about the user's presence at the place and possiblyprovide this information to other users of the geo-social networkingsystem.

SUMMARY

Particular embodiments relate to creating for a first user alocation-triggered note associated with a first location of the firstuser, determining a second user's location, and transmitting thelocation-triggered note to the second user if the second user is at ornear the first location. These and other features, aspects, andadvantages of the disclosure are described in more detail below in thedetailed description and in conjunction with the following figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example social networking system.

FIG. 2 illustrates an example method of creating a location-triggerednote.

FIG. 3 illustrates an example method of transmitting alocation-triggered note.

FIG. 3A illustrates an example message of a location-triggered note.

FIG. 4 illustrates an example computer system.

FIG. 5 illustrates an example mobile device platform.

DETAILED DESCRIPTION

The invention is now described in detail with reference to a fewembodiments thereof as illustrated in the accompanying drawings. In thefollowing description, numerous specific details are set forth in orderto provide a thorough understanding of the present disclosure. It isapparent, however, to one skilled in the art, that the presentdisclosure may be practiced without some or all of these specificdetails. In other instances, well known process steps and/or structureshave not been described in detail in order not to unnecessarily obscurethe present disclosure. In addition, while the disclosure is describedin conjunction with the particular embodiments, it should be understoodthat this description is not intended to limit the disclosure to thedescribed embodiments. To the contrary, the description is intended tocover alternatives, modifications, and equivalents as may be includedwithin the spirit and scope of the disclosure as defined by the appendedclaims.

A social networking system, such as a social networking website, enablesits users to interact with it, and with each other through, the system.Typically, to become a registered user of a social networking system, anentity, either human or non-human, registers for an account with thesocial networking system. Thereafter, the registered user may log intothe social networking system via an account by providing, for example, alogin ID or username and password. As used herein, a “user” may be anindividual (human user), an entity (e.g., an enterprise, business, orthird party application), or a group (e.g., of individuals or entities)that interacts or communicates with or over such a social networkenvironment.

When a user registers for an account with a social networking system,the social networking system may create and store a record, oftenreferred to as a “user profile”, in connection with the user. The userprofile may include information provided by the user and informationgathered by various systems, including the social networking system,relating to activities or actions of the user. For example, the user mayprovide his name, profile picture, contact information, birth date,gender, marital status, family status, employment, education background,preferences, interests, and other demographical information to beincluded in his user profile. The user may identify other users of thesocial networking system that the user considers to be his friends. Alist of the user's friends or first degree contacts may be included inthe user's profile. Connections in social networking systems may be inboth directions or may be in just one direction. For example, if Bob andJoe are both users and connect with each another, Bob and Joe are eachconnections of the other. If, on the other hand, Bob wishes to connectto Sam to view Sam's posted content items, but Sam does not choose toconnect to Bob, a one-way connection may be formed where Sam is Bob'sconnection, but Bob is not Sam's connection. Some embodiments of asocial networking system allow the connection to be indirect via one ormore levels of connections (e.g., friends of friends). Connections maybe added explicitly by a user, for example, the user selecting aparticular other user to be a friend, or automatically created by thesocial networking system based on common characteristics of the users(e.g., users who are alumni of the same educational institution). Theuser may identify or bookmark websites or web pages he visits frequentlyand these websites or web pages may be included in the user's profile.

The user may provide information relating to various aspects of the user(such as contact information and interests) at the time the userregisters for an account or at a later time. The user may also updatehis or her profile information at any time. For example, when the usermoves, or changes a phone number, he may update his contact information.Additionally, the user's interests may change as time passes, and theuser may update his interests in his profile from time to time. A user'sactivities on the social networking system, such as frequency ofaccessing particular information on the system, may also provideinformation that may be included in the user's profile. Again, suchinformation may be updated from time to time to reflect the user'smost-recent activities. Still further, other users or so-called friendsor contacts of the user may also perform activities that affect or causeupdates to a user's profile. For example, a contact may add the user asa friend (or remove the user as a friend). A contact may also writemessages to the user's profile pages typically known as wall-posts. Auser may also input status messages that get posted to the user'sprofile page.

A social network system may maintain social graph information, which cangenerally model the relationships among groups of individuals, and mayinclude relationships ranging from casual acquaintances to closefamilial bonds. A social network may be represented using a graphstructure. Each node of the graph corresponds to a member of the socialnetwork. Edges connecting two nodes represent a relationship between twousers. In addition, the degree of separation between any two nodes isdefined as the minimum number of hops required to traverse the graphfrom one node to the other. A degree of separation between two users canbe considered a measure of relatedness between the two users representedby the nodes in the graph.

A social networking system may support a variety of applications, suchas photo sharing, on-line calendars and events. For example, the socialnetworking system may also include media sharing capabilities. Forexample, the social networking system may allow users to postphotographs and other multimedia files to a user's profile, such as in awall post or in a photo album, both of which may be accessible to otherusers of the social networking system. Social networking system may alsoallow users to configure events. For example, a first user may configurean event with attributes including time and date of the event, locationof the event and other users invited to the event. The invited users mayreceive invitations to the event and respond (such as by accepting theinvitation or declining it). Furthermore, social networking system mayallow users to maintain a personal calendar. Similarly to events, thecalendar entries may include times, dates, locations and identities ofother users.

The social networking system may also support a privacy model. A usermay or may not wish to share his information with other users orthird-party applications, or a user may wish to share his informationonly with specific users or third-party applications. A user may controlwhether his information is shared with other users or third-partyapplications through privacy settings associated with his user profile.For example, a user may select a privacy setting for each user datumassociated with the user and/or select settings that apply globally orto categories or types of user profile information. A privacy settingdefines, or identifies, the set of entities (e.g., other users,connections of the user, friends of friends, or third party application)that may have access to the user datum. The privacy setting may bespecified on various levels of granularity, such as by specifyingparticular entities in the social network (e.g., other users),predefined groups of the user's connections, a particular type ofconnections, all of the user's connections, all first-degree connectionsof the user's connections, the entire social network, or even the entireInternet (e.g., to make the posted content item index-able andsearchable on the Internet). A user may choose a default privacy settingfor all user data that is to be posted. Additionally, a user mayspecifically exclude certain entities from viewing a user datum or aparticular type of user data.

The social networking system may maintain a database of informationrelating to geographic locations or places. Places may correspond tovarious physical locations, such as restaurants, bars, train stations,airports and the like. In one implementation, each place can bemaintained as a hub node in a social graph or other data structuremaintained by the social networking system, as described in U.S. patentapplication Ser. No. 12/763,171, which is incorporated by referenceherein for all purposes. Social networking system may allow users toaccess information regarding each place using a client application(e.g., a browser) hosted by a wired or wireless station, such as alaptop, desktop or mobile device. For example, social networking systemmay serve web pages (or other structured documents) to users thatrequest information about a place. In addition to user profile and placeinformation, the social networking system may track or maintain otherinformation about the user. For example, the social networking systemmay support geo-social networking system functionality including one ormore location-based services that record the user's location. Forexample, users may access the geo-social networking system using aspecial-purpose client application hosted by a mobile device of the user(or a web- or network-based application using a browser client). Theclient application may automatically access Global Positioning System(GPS) or other geo-location functions supported by the mobile device andreport the user's current location to the geo-social networking system.In addition, the client application may support geo-social networkingfunctionality that allows users to check-in at various locations andcommunicate this location to other users. A check-in to a given placemay occur when a user is physically located at a place and, using amobile device, access the geo-social networking system to register theuser's presence at the place. A user may select a place from a list ofexisting places near to the user's current location or create a newplace. The social networking system may automatically checks in a userto a place based on the user's current location and past location data,as described in U.S. patent application Ser. No. 13/042,357 filed onMar. 7, 2011, which is incorporated by reference herein for allpurposes. An entry including a comment and a time stamp corresponding tothe time the user checked in may be displayed to other users. Forexample, a record of the user's check-in activity may be stored in adatabase. Social networking system may select one or more recordsassociated with check-in activities of users at a given place andinclude such check-in activity in web pages (or other structureddocuments) that correspond to a given place. The check-in activity mayalso be displayed on a user profile page and in news feeds provided tousers of the social networking system.

Still further, a special purpose client application hosted on a mobiledevice of a user may be configured to continuously capture location dataof the mobile device and send the location data to social networkingsystem. In this manner, the social networking system may track theuser's location and provide various recommendations to the user relatedto places that are proximal to the user's path or that are frequented bythe user. In one implementation, a user may opt in to thisrecommendation service, which causes the client application toperiodically post location data of the user to the social networkingsystem.

A social networking system may support a news feed service. A news feedis a data format typically used for providing users with frequentlyupdated content. A social networking system may provide various newsfeeds to its users, where each news feed includes content relating to aspecific subject matter or topic. Various pieces of content relating toa particular topic may be aggregated into a single news feed. The topicmay be broad such as various events related to users within a thresholddegree of separation of a subject user, and/or updates to pages that auser has liked or otherwise established a subscriber relationship.Individual users of the social networking system may subscribe tospecific news feeds of their interest. U.S. Pat. No. 7,669,123,incorporated by reference in its entirety for all purposes, describes asystem that can be used to dynamically provide a news feed in a socialnetworking system. A group of related actions may be presented togetherto a user of the social networking system in the same news feed. Forexample, a news feed concerning an event organized through the socialnetworking system may include information about the event, such as itstime, location, and attendees, and photos taken at the event, which havebeen uploaded to the social networking system. U.S. application Ser. No.12/884,010, incorporated by reference in its entirety for all purposes,describes a system that can be used to construct a news feed comprisingrelated actions and present the news feed to a user of the socialnetworking system.

FIG. 1 illustrates an example social networking system. In particularembodiments, the social networking system may store user profile dataand social graph information in user profile database 101. In particularembodiments, the social networking system may store user event data inevent database 102. For example, a user may register a new event byaccessing a client application to define an event name, a time and alocation, and cause the newly created event to be stored in eventdatabase 102. For example, a user may register with an existing event byaccessing a client application to confirming attending the event, andcause the confirmation to be stored in event database 102. In particularembodiments, the social networking system may store user privacy policydata in privacy policy database 103. In particular embodiments, thesocial networking system may store geographic and location data inlocation database 104. In particular embodiments, databases 101, 102,103, and 104 may be operably connected to the social networking system'sfront end 120 and news feed engine 110. In particular embodiments, thefront end 120 may interact with client device 122 through network cloud121. For example, the front end 120 may be implemented in softwareprograms hosted by one or more server systems. For example, eachdatabase such as user profile database 101 may be stored in one or morestorage devices. Client device 122 is generally a computer or computingdevice including functionality for communicating (e.g., remotely) over acomputer network. Client device 122 may be a desktop computer, laptopcomputer, personal digital assistant (PDA), in- or out-of-car navigationsystem, smart phone or other cellular or mobile phone, or mobile gamingdevice, among other suitable computing devices. Client device 122 mayexecute one or more client applications, such as a web browser (e.g.,Microsoft Windows Internet Explorer, Mozilla Firefox, Apple Safari,Google Chrome, and Opera, etc.) or special-purpose client application(e.g., Facebook for iPhone, etc.), to access and view content over acomputer network. Front end 120 may include web or HTTP serverfunctionality, as well as other functionality, to allow users to accessthe social networking system. Network cloud 121 generally represents anetwork or collection of networks (such as the Internet, a corporateintranet, a virtual private network, a local area network, a wirelesslocal area network, a wide area network, a metropolitan area network, ora combination of two or more such networks) over which client devices122 may access the social network system.

In particular embodiments, location database 104 may store aninformation base of places, where each place includes a name, ageographic location and meta information (such as the user thatinitially created the place, reviews, comments, check-in activity data,and the like). Places may be created by administrators of the systemand/or created by users of the system. For example, a user may registera new place by accessing a client application to define a place name andprovide a geographic location and cause the newly created place to beregistered in location database 104. As discussed above, a created placemay correspond to a hub node, which an administrator can claim forpurposes of augmenting the information about the place and for creatingads or other offers to be delivered to users. In particular embodiments,system front end 120 may construct and serve a web page of a place, asrequested by a user. In some embodiments, a web page of a place mayinclude selectable components for a user to “like” the place or check into the place. In particular embodiments, location database 104 may storegeo-location data identifying a real-world geographic location of a userassociated with a check-in. For example, a geographic location of anInternet connected computer can be identified by the computer's IPaddress. For example, a geographic location of a cell phone equippedwith cellular, Wi-Fi and/or GPS capabilities can be identified by celltower triangulation, Wi-Fi positioning, and/or GPS positioning. Inparticular embodiments, location database 104 may store a geographiclocation and additional information of a plurality of places. Forexample, a place can be a local business, a point of interest (e.g.,Union Square in San Francisco, Calif.), a college, a city, or a nationalpark. For example, a geographic location of a place (e.g., a localcoffee shop) can be an address, a set of geographic coordinates(latitude and longitude), or a reference to another place (e.g., “thecoffee shop next to the train station”). For example, additionalinformation of a place can be business hours, photos, or user reviews ofthe place. In particular embodiments, location database 104 may store auser's location data. For example, a user can create a place (e.g., anew restaurant or coffee shop) and the social networking system canstore the created place in location database 104. For example, locationdatabase 104 may store a user's check-in activities. For example,location database 104 may store a user's geographic location provided bythe user's GPS-equipped mobile device.

In particular embodiments, news feed engine 110 may access user profiledatabase 101, event database 102, and location database 104 for dataabout a particular user of the social networking system, and assemble alist of one or more activities as news items about the particular user.In particular embodiments, news feed engine 110 may access privacypolicy database 103 and determine a subset of news items based on one ormore privacy settings by the particular user. In particular embodiments,news feed engine 110 may compile a dynamic list of a limited number ofnews items about the particular user in a preferred order (i.e., a newsfeed). In particular embodiments, news feed engine 110 may provide linksrelated to one or more activities in the news items, and links providingopportunities to participate in the activities. For example, a news feedabout a user can comprise the user's wall posts, status updates,comments on other users' photos, and a recent check-in to a place (witha link to a web page of the place). In other embodiments, news feedengine 110 may access user profile database 101, event database 102, andlocation database 104 and compile a dynamic list of a number of newsitems about a group of related actions received from users of the socialnetworking system (i.e., a news feed). For example, a news feed cancomprise an event that a user may schedule and organize through thesocial networking system (with a link to participate the event),check-ins at a specific geographical location of the event by the userand other participants of the event, messages about the event posted bythe user and other participants of the event, and photos of the eventuploaded by the user and other participants of the event.

Ordinarily, when a user creates an online record related to a location,the record can be shown to other users, regardless locations of theother users. For example, when a user posts a review about a restaurantin a business review web site, other users can access the reviewanywhere with an access to the business review web site. Particularembodiments herein describe methods of creating for a first user alocation-triggered note associated with a particular location, whereinthe note is accessible to a second user only when the second user is ator near the particular location. For example, a first user may create anote about a particular restaurant (e.g., “Try the buffalo wings in thisplace!”). Instead of posting the note to a web page, particularembodiments herein may only transmit the note to a second user when thesecond user is at the particular restaurant.

FIG. 2 illustrates an example method of creating a location-triggerednote. FIG. 2 can be implemented by a location-triggered note processhosted by one or more computing devices of a social networking system.In particular embodiments, the location-triggered note process mayreceive, from a first user, a request to create a location-triggerednote comprising a first location of the first user and a message (201).A message may comprise a text string (e.g., a scribbling note, acomment, a restaurant review), a media object (e.g., a photo, a videoclip), an URL link to a web page or an application (e.g., an onlinegame), or any combination thereof. For example, a first user can accessa special-purpose client application hosted by the first user'sGPS-equipped mobile device and enter a message at a user interface ofthe special-purpose client application, causing the special-purposeclient application to transmit to the social networking system a requestincluding a user identifier of the social networking system for thefirst user, the message, and a pair of GPS coordinates corresponding tothe first user's current location. For example, a first user can accessa map with a current GPS location displayed in a graphical userinterface of a client-application hosted by the first user'sGPS-equipped mobile device, select a location or region in the map, andenter a message in a dialog box displayed in the graphical userinterface, causing the client application to transmit to the socialnetworking system a request including a user identifier of the socialnetworking system for the first user, the message, and a pair of GPScoordinates corresponding to the selected location or region. Forexample, a first user may access a web page (in a graphical userinterface of a client application hosted by the first user's clientdevice) for a particular place and check in to the particular place.Alternatively, a first user may check in to a particular place byaccessing a mobile client application, and be presented a web page forthe particular place. The first user may enter a message for a requestfor a location-triggered note at the place web page (e.g., enter amessage at a “leave a note here” dialog box in the web page), causingthe client application to transmit the request for a location-triggerednote and the message to the social networking system, while thelocation-triggered note process can determine a location for the requestbased on the first user's check-in activity (e.g., the particular place,or a geographical location corresponding to the particular place).

In some embodiments, a request to create a location-triggered note mayfurther comprise one or more privacy settings. For example, when a firstuser enters a message for a request creating a location-triggered notefrom the special-purpose client application (or the web page for theparticular place) described above, the first user can further specifyone or more privacy settings. The first user may specify a privacysetting that the location-triggered note is accessible to users who arewithin a threshold degree of separation from the first user (e.g., thefirst user's first-degree social contacts). The first user may specify aprivacy setting that the location-triggered note is accessible to one ormore particular users—i.e., one or more intended recipients (e.g., thefirst user's roommates). The first user may specify a privacy settingthat the location-triggered note is not accessible to one or moreparticular users. The first user may specify a privacy setting that thelocation-triggered note is accessible to users who are in a particulargroup or share a common interest (e.g., users who went to the samecollege, users who like a place page of a particular sports team). Thefirst user may specify a privacy setting that the location-triggerednote is not accessible to users who are in a particular group or share acommon interest (e.g., the first user may wan to leave thelocation-triggered note with the first user's first-degree socialcontacts, but not with those who went to a particular college). In otherembodiments, the social networking system may specify one or moredefault privacy settings for a location-triggered note (e.g., accessibleto all users in the social networking system, accessible to therequesting user's first-degree social contacts).

In particular embodiments, the location-triggered note process maycreate a location-triggered note record comprising the first locationand the message (202). In some embodiments, the location-triggeredprocess may create a location triggered note record comprising the firstlocation, the message, and one or more privacy settings and/orinformation on one or more intended recipients (e.g., one or moreprivacy settings specified by the first user, one or more defaultprivacy settings). In some embodiments, the location-triggered processmay store the location triggered note record in location database 104.

FIG. 3 illustrates an example method of transmitting alocation-triggered note. In particular embodiments, thelocation-triggered note process may receive, from a second user, dataindicating a second location of the second user (301). For example, thelocation-triggered note process can receive GPS coordinates transmittedfrom the second user's GPS-equipped mobile device. For example, thelocation-triggered note process may access location database 104 for arecent location check-in activity of the second user (e.g., a recentlocation check-in by the second user, or a recent location check-in ofthe second user by another user). Other methods for identifying thelocation of the second user may include data reports from POS terminalsor mobile devices of other users that have interacted with the seconduser's mobile phone via BlueTooth or Near-Field Communicationsprotocols.

In particular embodiments, the location-triggered note process maydetermine whether the location-triggered note record is accessible tothe second user based at least in part on a comparison between the firstlocation and the second location. In particular embodiments, thelocation-triggered note process may determine whether thelocation-triggered note record is accessible to the second user based onat least in part on whether the second location is within a thresholddistance (e.g., 500 feet) from the first location (302). That is, thelocation-triggered note record can be accessible to the second user ifthe second user is at or near the first location. In some embodiments,the location-triggered note process may further determine whether thelocation-triggered note record is accessible to the second user furtherbased on one or more privacy settings. If a privacy setting limitingaccess to the location-triggered note record to the first user'sfirst-degree social contact, for example, then the location-triggerednote is available to a second user only if the second user is the firstuser's first-degree contact, and the second user is at or near the firstlocation. In one embodiment, the location-triggered note process maydetermine whether the location-triggered note record is accessible tothe second user based on whether the location-triggered note record wascreated within a threshold time (e.g., the record was created withinfive days). That is, the location-triggered note process may disregardlocation-triggered note records that are not recently created.

In particular embodiments, the location-triggered note process maytransmit the message of the location-triggered note record to the seconduser if the note is accessible to the second user (303). For example,the location-triggered note process can transmit the message the seconduser's mobile device, causing a client application hosted by the seconduser's mobile device to display the message in a graphical userinterface of the client application. FIG. 3A illustrated an examplemessage of a location-triggered note. As illustrated in the example ofFIG. 3A, the location-triggered note process may transmit to the seconduser a notification 320 (e.g., constructed with <iframe> in a structureddocument) including a user name of the first user 321 (e.g., “Bill”),the first location 323 (e.g., “Fantastic Diner”), and the message 324(e.g., “Try the buffalo wings at this place”). The notification mayfurther include a user profile picture thumbnail 321 of the first user.For example, as the second user checks in to a particular placecorresponding to the first location (e.g., from a special-purpose clientapplication), the location-triggered note process can incorporate themessage (or a link to the message) in a web page for the particularplace to be presented to the second user. For example, thelocation-triggered note process can transmit the message to the seconduser's client device by using a push notification (e.g., an email, aninstant message, an short message service or SMS message, a phone call)incorporating the message. For example, the location-triggered noteprocess can cause news feed engine 110 to create a news feed entrycomprising the message. For example, the news feed engine 110 can addthe news feed entry to a news feed to be displayed in the second user'sprofile page. Furthermore, the location-triggered note process may postthe message of the location-triggered note record to a web page (or astructured document) of a place an/or an event with a locationcorresponding to the first location when the second user is near thefirst location. For example, the news feed engine 110 can add the newsfeed entry to a news feed to be displayed in a profile page of a placecorresponding to the first location. For example, the news feed engine110 can add the news feed entry to a news feed to be displayed in aprofile page of an event at the first location. In one embodiments, thelocation-triggered note process may receive data indicating a secondlocation of the second user, determine one or more location-triggerednote records accessible to the second user (e.g., one or morelocation-triggered note records with locations in a vicinity of thesecond location), and transmitting locations and messages of the one ormore location-triggered note records to the second user, causing aclient application hosted by the second user's computing device topresent the one or more location-triggered note records to the seconduser—e.g., in a map incorporating the locations of the one or morelocation-triggered note records in a graphical user interface of theclient application. In another embodiment, the location-triggered noteprocess may transmit a notification (e.g., an email, an SMS message, aninstant message, an news feed entry update to the news feed for thefirst user's profile page) to the first user indicating the second useris at or near the first location, and/or the second user has accessedthe message. Yet in another embodiment, the location-triggered noteprocess may transmit a notification to the first user, when the firstuser is at or near the first location (e.g., determined by the firstuser's GPS coordinates or check-in activities), indicating the seconduser is at or near the first location, and/or the second user has accessthe message, while allowing the first user potentially to meet thesecond user at the first location.

FIG. 4 illustrates an example computer system 600, which may be usedwith some embodiments of the present invention. This disclosurecontemplates any suitable number of computer systems 600. Thisdisclosure contemplates computer system 600 taking any suitable physicalform. As example and not by way of limitation, computer system 600 maybe an embedded computer system, a system-on-chip (SOC), a desktopcomputer system, a mobile computer system, a game console, a mainframe,a mesh of computer systems, a server, or a combination of two or more ofthese. Where appropriate, computer system 600 may include one or morecomputer systems 600; be unitary or distributed; span multiplelocations; span multiple machines; or reside in a cloud, which mayinclude one or more cloud components in one or more networks. Whereappropriate, one or more computer systems 600 may perform withoutsubstantial spatial or temporal limitation one or more steps of one ormore methods described or illustrated herein. As an example and not byway of limitation, one or more computer systems 600 may perform in realtime or in batch mode one or more steps of one or more methods describedor illustrated herein. One or more computer systems 600 may perform atdifferent times or at different locations one or more steps of one ormore methods described or illustrated herein, where appropriate.

In particular embodiments, computer system 600 includes a processor 602,memory 604, storage 606, an input/output (I/O) interface 608, acommunication interface 610, and a bus 612. In particular embodiments,processor 602 includes hardware for executing instructions, such asthose making up a computer program. As an example and not by way oflimitation, to execute instructions, processor 602 may retrieve (orfetch) the instructions from an internal register, an internal cache,memory 604, or storage 606; decode and execute them; and then write oneor more results to an internal register, an internal cache, memory 604,or storage 606. In particular embodiments, processor 602 may include oneor more internal caches for data, instructions, or addresses. Inparticular embodiments, memory 604 includes main memory for storinginstructions for processor 602 to execute or data for processor 602 tooperate on. As an example and not by way of limitation, computer system600 may load instructions from storage 606 to memory 604. Processor 602may then load the instructions from memory 604 to an internal registeror internal cache. To execute the instructions, processor 602 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 602 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor602 may then write one or more of those results to memory 604. One ormore memory buses (which may each include an address bus and a data bus)may couple processor 602 to memory 604. Bus 612 may include one or morememory buses, as described below. In particular embodiments, one or morememory management units (MMUs) reside between processor 602 and memory604 and facilitate accesses to memory 604 requested by processor 602. Inparticular embodiments, memory 604 includes random access memory (RAM).This RAM may be volatile memory, where appropriate Where appropriate,this RAM may be dynamic RAM (DRAM) or static RAM (SRAM).

In particular embodiments, storage 606 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 606may include an HDD, a floppy disk drive, flash memory, an optical disc,a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage 606 may includeremovable or non-removable (or fixed) media, where appropriate. Storage606 may be internal or external to computer system 600, whereappropriate. In particular embodiments, storage 606 is non-volatile,solid-state memory. In particular embodiments, storage 606 includesread-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), orflash memory or a combination of two or more of these.

In particular embodiments, I/O interface 608 includes hardware,software, or both providing one or more interfaces for communicationbetween computer system 600 and one or more I/O devices. Computer system600 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 600. As an example and not by way of limitation, anI/O device may include a keyboard, microphone, display, touch screen,mouse, speaker, camera, another suitable I/O device or a combination oftwo or more of these. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 608 for them. Where appropriate, I/O interface 608 mayinclude one or more device or software drivers enabling processor 602 todrive one or more of these I/O devices. I/O interface 608 may includeone or more I/O interfaces 608, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 610 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 600 and one or more other computer systems 600 or one ormore networks. As an example and not by way of limitation, communicationinterface 610 may include a network interface controller (NIC) forcommunicating with an Ethernet or other wire-based network or a wirelessNIC (WNIC) for communicating with a wireless network, such as a WI-FInetwork. This disclosure contemplates any suitable network and anysuitable communication interface 610 for it. As an example and not byway of limitation, computer system 600 may communicate with an ad hocnetwork, a personal area network (PAN), a local area network (LAN), awide area network (WAN), a metropolitan area network (MAN), or one ormore portions of the Internet or a combination of two or more of these.One or more portions of one or more of these networks may be wired orwireless. As an example, computer system 600 may communicate with awireless PAN (WPAN) (e.g., a BLUETOOTH WPAN), a WI-FI network (e.g., a802.11a/b/g/n WI-FI network,), a WI-MAX network, a cellular telephonenetwork (e.g., a Global System for Mobile Communications (GSM) network,a Long Term Evolution (LTE) network), or other suitable wireless networkor a combination of two or more of these.

In particular embodiments, bus 612 includes hardware, software, or bothcoupling components of computer system 600 to each other. As an exampleand not by way of limitation, bus 612 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an INFINIBAND interconnect, a low-pin-count (LPC) bus, amemory bus, a Peripheral Component Interconnect Express or PCI-Expressbus, a serial advanced technology attachment (SATA) bus, aInter-Integrated Circuit (I²C) bus, a Secure Digital (SD) memoryinterface, a Secure Digital Input Output (SDIO) interface, a UniversalSerial Bus (USB) bus, a General Purpose Input/Output (GPIO) bus, oranother suitable bus or a combination of two or more of these. Bus 612may include one or more buses 612, where appropriate.

The client-side functionality described above can be implemented as aseries of instructions stored on a computer-readable storage mediumthat, when executed, cause a programmable processor to implement theoperations described above. While the client device 122 may beimplemented in a variety of different hardware and computing systems,FIG. 5 shows a schematic representation of the main components of anexample computing platform of a client or mobile device, according tovarious particular embodiments. In particular embodiments, computingplatform 702 may comprise controller 704, memory 706, and input outputsubsystem 710. In particular embodiments, controller 704 which maycomprise one or more processors and/or one or more microcontrollersconfigured to execute instructions and to carry out operationsassociated with a computing platform. In various embodiments, controller704 may be implemented as a single-chip, multiple chips and/or otherelectrical components including one or more integrated circuits andprinted circuit boards. Controller 704 may optionally contain a cachememory unit for temporary local storage of instructions, data, orcomputer addresses. By way of example, using instructions retrieved frommemory, controller 704 may control the reception and manipulation ofinput and output data between components of computing platform 702. Byway of example, controller 704 may include one or more processors or oneor more controllers dedicated for certain processing tasks of computingplatform 702, for example, for 2D/3D graphics processing, imageprocessing, or video processing.

Controller 704 together with a suitable operating system may operate toexecute instructions in the form of computer code and produce and usedata. By way of example and not by way of limitation, the operatingsystem may be Windows-based, Mac-based, or Unix or Linux-based, orSymbian-based, among other suitable operating systems. The operatingsystem, other computer code and/or data may be physically stored withinmemory 706 that is operatively coupled to controller 704.

Memory 706 may encompass one or more storage media and generally providea place to store computer code (e.g., software and/or firmware) and datathat are used by computing platform 702. By way of example, memory 706may include various tangible computer-readable storage media includingRead-Only Memory (ROM) and/or Random-Access Memory (RAM). As is wellknown in the art, ROM acts to transfer data and instructionsuni-directionally to controller 704, and RAM is used typically totransfer data and instructions in a bi-directional manner. Memory 706may also include one or more fixed storage devices in the form of, byway of example, hard disk drives (HDDs), solid-state drives (SSDs),flash-memory cards (e.g., Secured Digital or SD cards), among othersuitable forms of memory coupled bi-directionally to controller 704.Information may also reside on one or more removable storage medialoaded into or installed in computing platform 702 when needed. By wayof example, any of a number of suitable memory cards (e.g., SD cards)may be loaded into computing platform 702 on a temporary or permanentbasis.

Input output subsystem 710 may comprise one or more input and outputdevices operably connected to controller 704. For example, input outputsubsystem may include keyboard, mouse, one or more buttons, and/or,display (e.g., liquid crystal display (LCD), or any other suitabledisplay technology). Generally, input devices are configured to transferdata, commands and responses from the outside world into computingplatform 702. The display is generally configured to display a graphicaluser interface (GUI) that provides an easy to use visual interfacebetween a user of the computing platform 702 and the operating system orapplication(s) running on the mobile device. Generally, the GUI presentsprograms, files and operational options with graphical images. Duringoperation, the user may select and activate various graphical imagesdisplayed on the display in order to initiate functions and tasksassociated therewith. Input output subsystem 710 may also include touchbased devices such as touch pad and touch screen. A touchpad is an inputdevice including a surface that detects touch-based inputs of users.Similarly, a touch screen is a display that detects the presence andlocation of user touch inputs. Input output system 710 may also includedual touch or multi-touch displays or touch pads that can identify thepresence, location and movement of more than one touch inputs, such astwo or three finger touches.

In particular embodiments, computing platform 702 may additionallycomprise audio subsystem 712, camera subsystem 712, wirelesscommunication subsystem 716, sensor subsystems 718, and/or wiredcommunication subsystem 720, operably connected to controller 704 tofacilitate various functions of computing platform 702. For example,Audio subsystem 712, including a speaker, a microphone, and a codecmodule configured to process audio signals, can be utilized tofacilitate voice-enabled functions, such as voice recognition, voicereplication, digital recording, and telephony functions. For example,camera subsystem 712, including an optical sensor (e.g., a chargedcoupled device (CCD), image sensor), can be utilized to facilitatecamera functions, such as recording photographs and video clips. Forexample, wired communication subsystem 720 can include a UniversalSerial Bus (USB) port for file transferring, or a Ethernet port forconnection to a local area network (LAN). Additionally, computingplatform 702 may be powered by power source 732.

Wireless communication subsystem 716 can be designed to operate over oneor more wireless networks, for example, a wireless PAN (WPAN) (e.g., aBLUETOOTH), a WI-FI network (e.g., an 802.11a/b/g/n network), a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network, a Long Term Evolution(LTE) network). Additionally, wireless communication subsystem 716 mayinclude hosting protocols such that computing platform 702 may beconfigured as a base station for other wireless devices. Otherinput/output devices may include an accelerometer that can be used todetect the orientation of the device.

Sensor subsystem 718 may include one or more sensor devices to provideadditional input and facilitate multiple functionalities of computingplatform 702. For example, sensor subsystems 718 may include GPS sensorfor location positioning, altimeter for altitude positioning, motionsensor for determining orientation of a mobile device, light sensor forphotographing function with camera subsystem 714, temperature sensor formeasuring ambient temperature, and/or biometric sensor for securityapplication (e.g., fingerprint reader).

In particular embodiments, various components of computing platform 702may be operably connected together by one or more buses (includinghardware and/or software). As an example and not by way of limitation,the one or more buses may include an Accelerated Graphics Port (AGP) orother graphics bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a PeripheralComponent Interconnect Express PCI-Express bus, a serial advancedtechnology attachment (SATA) bus, a Inter-Integrated Circuit (I²C) bus,a Secure Digital (SD) memory interface, a Secure Digital Input Output(SDIO) interface, a Universal Serial Bus (USB) bus, a General PurposeInput/Output (GPIO) bus, an Advanced Microcontroller Bus Architecture(AMBA) bus, or another suitable bus or a combination of two or more ofthese. Additionally, computing platform 702 may be powered by powersource 732.

The present disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsherein that a person having ordinary skill in the art would comprehend.Similarly, where appropriate, the appended claims encompass all changes,substitutions, variations, alterations, and modifications to the exampleembodiments herein that a person having ordinary skill in the art wouldcomprehend.

What is claimed is:
 1. A method comprising: by one or more computingdevices, receiving, from a first user, a request to create alocation-triggered note comprising a first location of the first userand a message; by one or more computing devices, creating alocation-triggered-note record comprising the first location and themessage; by one or more computing devices, receiving, from a seconduser, data indicating a second location of the second user; by one ormore computing devices, determining whether the location-triggered-noterecord is accessible to the second user based at least in part on acomparison between the first location and the second location; by one ormore computing devices, sending the message of thelocation-triggered-note record to the second user if thelocation-triggered-note record is accessible to the second user; by oneor more computing devices, in response to sending the messagedetermining if the first user is within a predetermined distance fromthe first location; and by one or more computing devices, in response todetermining the first user is within the predetermined distance from thefirst location, sending to the first user a notification indicating thatthe message of the location-triggered-note record has been sent to thesecond user.
 2. The method of claim 1, further comprising storing thelocation-triggered-note record in a data store.
 3. The method of claim1, wherein whether the location-triggered-note record is accessible tothe second user is determined based further on one or more privacysettings defining one or more users having access to thelocation-triggered-note record.
 4. The method of claim 3, wherein one ormore of the privacy settings are defined by the first user.
 5. Themethod of claim 1, wherein the sending the message of thelocation-triggered-note record to the second user comprises sending tothe second user a notification comprising a user name of the first user,the first location, and the message.
 6. The method of claim 5, whereinthe notification further comprises a profile picture of the first user.7. The method of claim 5, wherein the notification is an email, a ShortMessages Service (SMS) message, an instant message (IM), or a phonecall.
 8. The method of claim 1, wherein sending the message of thelocation-triggered-note record to the second user comprises: creating anews-feed entry comprising a user name of the first user, the firstlocation, and the message; and updating a news feed for the second userwith the news-feed entry.
 9. The method of claim 1, further comprisingsending to the first user a notification indicating that the second useris at or near the first location.
 10. One or more computer-readablenon-transitory storage media embodying software that is operable whenexecuted to: receive, from a first user, a request to create alocation-triggered note comprising a first location of the first userand a message; create a location-triggered-note record comprising thefirst location and the message; receive, from a second user, dataindicating a second location of the second user; determine whether thelocation-triggered-note record is accessible to the second user based atleast in part on a comparison between the first location and the secondlocation; send the message of the location-triggered-note record to thesecond user if the location-triggered- note record is accessible to thesecond user; in response to sending the message, determining if thefirst user is within a predetermined distance from the first location;and in response to determining the first user is within thepredetermined distance from the first location, send to the first user anotification indicating that the message of the location-triggered-noterecord has been sent to the second user.
 11. The media of claim 10,wherein the software is further operable when executed to store thelocation-triggered-note record in a data store.
 12. The media of claim10, wherein whether the location-triggered-note record is accessible tothe second user is determined based further on one or more privacysettings defining one or more users having access to thelocation-triggered-note record.
 13. The media of claim 12, wherein oneor more of the privacy settings are defined by the first user.
 14. Themedia of claim 10, wherein sending the message of thelocation-triggered-note record to the second user comprises sending tothe second user a notification comprising a user name of the first user,the first location, and the message.
 15. The media of claim 14, whereinthe notification further comprises a profile picture of the first user.16. The media of claim 14, wherein the notification is an e-mail, aShort Messages Service (SMS) message, an instant message (IM), or aphone call.
 17. The media of claim 10, wherein sending the message ofthe location-triggered-note record to the second user comprises:creating a news-feed entry comprising a user name of the first user, thefirst location, and the message; and updating a news feed for the seconduser with the news-feed entry.
 18. The media of claim 10, wherein thesoftware is further operable when executed to send to the first user anotification indicating the second user is at or near the firstlocation.
 19. A system comprising: one or more processors; and a memorycoupled to the processors comprising instructions executable by theprocessors, the processors being operable when executing theinstructions to: receive, from a first user, a request to create alocation-triggered note comprising a first location of the first userand a message; create a location-triggered-note record comprising thefirst location and the message; receive, from a second user, dataindicating a second location of the second user; determine whether thelocation-triggered-note record is accessible to the second user based atleast in part on a comparison between the first location and the secondlocation; send the message of the location-triggered-note record to thesecond user if the location-triggered-note record is accessible to thesecond user; in response to sending the message, determining if thefirst user is within a predetermined distance from the first location;and in response to determining the first user is within thepredetermined distance from the first location, send to the first user anotification indicating that the message of the location-triggered-noterecord has been sent to the second user.
 20. The system of claim 19,wherein the processors are further operable when executing theinstructions to store the location-triggered-note record in a datastore.